generic
   type objet is private;
   with function "<=" (A,B : objet) return boolean is <>;
package taso_abstract is

   type tas is abstract tagged private;

   function Creer return tas is abstract;
   function Mettre(T : tas; x : objet) return tas is abstract;
   function Retirer(T : tas; x : objet) return tas is abstract;
   function Dans(T : tas; x: objet) return boolean is abstract;
   function Taille(T : tas) return natural is abstract;
   function Ieme(T : tas; i : natural) return objet is abstract;

private

   type tas is abstract tagged null record;

end taso_abstract;
